% 读取第一个 Excel 文件，包括菜品的品类和编号
file1 = 'C:\Users\20376\Desktop\论文\附件1.xlsx';
data1 = readtable(file1);

% 读取第二个 Excel 文件，包括菜品的编号和每次销售量
file2 = 'C:\Users\20376\Desktop\论文\附件2.xlsx';
data2 = readtable(file2);

% 合并两个表格，以编号为键
mergedData = innerjoin(data1, data2, 'Keys', 'ID');



% 显示结果
disp(groupedData);

% 找到每个菜品的唯一编号并使用 splitapply 计算最大销售量
[groupID, uniqueNumbers] = findgroups(mergedData.ID);
maxSales = splitapply(@max, mergedData.Sale, groupID);

% 创建一个新表格，包含菜品编号及其最大销售量
maxSalesTable = table(uniqueNumbers, maxSales, 'VariableNames', {'ID', 'MaxSales'});

% 与原始表格合并，以得到品类信息
mergedWithMaxSales = innerjoin(data1, maxSalesTable, 'Keys', 'ID');

% 按照品类分组，并求和
[groupID2, categories] = findgroups(mergedWithMaxSales.CategoryName);
sumMaxSalesPerCategory = splitapply(@sum, mergedWithMaxSales.MaxSales, groupID2);

% 创建结果表格，显示每个品类和其最大销售量之和
resultTable = table(categories, sumMaxSalesPerCategory, 'VariableNames', {'CategoryName', 'MaxSalesSum'});

% 显示结果
disp(resultTable);

% 找到每个菜品的唯一编号并使用 splitapply 计算最小销售量
minSales = splitapply(@min, mergedData.Sale, groupID);

% 创建一个新表格，包含菜品编号及其最小销售量
minSalesTable = table(uniqueNumbers, minSales, 'VariableNames', {'ID', 'MinSales'});

% 与原始表格合并，以得到品类信息
mergedWithMinSales = innerjoin(data1, minSalesTable, 'Keys', 'ID');

% 按照品类分组，并求和
sumMinSalesPerCategory = splitapply(@sum, mergedWithMinSales.MinSales, groupID2);

resultTable = table(categories, sumMinSalesPerCategory, 'VariableNames', {'CategoryName', 'MinSalesSum'});

% 显示结果
disp(resultTable);


% 找到每个菜品的唯一编号并使用 splitapply 计算平均销售量
meanSales = splitapply(@mean, mergedData.Sale, groupID);

% 创建一个新表格，包含菜品编号及其平均销售量
meanSalesTable = table(uniqueNumbers, meanSales, 'VariableNames', {'ID', 'MeanSales'});

% 与原始表格合并，以得到品类信息
mergedWithMeanSales = innerjoin(data1, meanSalesTable, 'Keys', 'ID');

% 按照品类分组，并求和
sumMeanSalesPerCategory = splitapply(@sum, mergedWithMeanSales.MeanSales, groupID2);

% 将结果添加到结果表格中
resultTable.MeanSalesSum = sumMeanSalesPerCategory;

resultTable.MaxSalesSum = sumMaxSalesPerCategory;


% 显示更新后的结果
disp(resultTable);

